package com.lagou.phase1.module3.work3;

import java.util.*;

public class MapTest {
    public static void main(String[] args) {
        //定义Map集合，用Student对象作为key，用字符串(此表示表示学生的住址)作为value
        Map<Student,String> map = new HashMap<>();
        //创建学生类对象
        Student s1 = new Student("赵云",18);
        Student s2 = new Student("程咬金",18);
        new Student();
        //把学生对象添加到集合中
        map.put(s1,"蜀国");
        map.put(s2,"大唐");
        //四种方法遍历Map集合
        //第一种：直接调用toString方法
        System.out.println(map);

        //第二种：keySet方法遍历
        System.out.println("-----------------------");
         //定义一个Set集合来接收包含键的视图
        Set set = map.keySet();
         //用foreach循环来遍历集合中的元素
        for (Object key:set) {
            Object o = map.get(key);
            map.get(key);
            System.out.println("查询到的学生是："+key+":"+o);
        }
        //第三种：entrySet方式遍历
        System.out.println("-----------------------");
         //定义一个Set集合来接收包含映射的set视图
        Set<Map.Entry<Student, String>> entrySet = map.entrySet();
         //用增强for循环来遍历Map集合信息
        for (Map.Entry<Student, String> o:entrySet) {
            Student key = o.getKey();
            String value = o.getValue();
            System.out.println("获取的学生信息是："+key+":"+value);
        }

        //第四种：用迭代器遍历
        System.out.println("-----------------------");
         //定义一个指向Map集合键的迭代器
        Iterator<Map.Entry<Student, String>> iterator = map.entrySet().iterator();
         //用while循环来遍历Map集合信息
        while (iterator.hasNext()){
            Map.Entry<Student, String> m1 = iterator.next();
            Student key = m1.getKey();
            String s = map.get(key);
            System.out.println("获取到的学生信息是:"+key+":"+s);
        }


    }
}
